home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine CD 1995 / Archive Magazine CD 1995.iso / discs / prog_disc / volume_5 / issue_06 / benchmarks / c_source / dread < prev    next >
Encoding:
Text File  |  1991-06-04  |  963 b   |  53 lines

  1. /*
  2.  * Read from disk benchmark
  3.  */
  4.  
  5. #include <stdio.h>
  6. #include "timer.h"
  7.  
  8. #define BLOCKS 256
  9.  
  10. long lseek();
  11.  
  12. main()
  13. {
  14.     char buffer[512];
  15.     char *filename = "a_large_file";
  16.     register int i;
  17.     int filedes;
  18.     long int offset;
  19.  
  20.     init_timer();
  21.     start_timer();
  22.     if((filedes = open(filename, 0)) < 0)
  23.     {
  24.         printf("Cannot find '%s'. Run 'dwrite' first. \n", filename);
  25.         exit(1);
  26.     }
  27.     for(i = 0; i < BLOCKS; i++)
  28.     {
  29. #ifdef SIXTEEN
  30.         offset = (long)rand() * 4L;
  31. #endif
  32. #ifdef THIRTYTWO
  33.         offset = (long)rand() / 16384L;
  34. #endif
  35.         if(lseek(filedes, offset, 0) < 0L)
  36.         {
  37.             printf("Lseek to %ld failed i=%d\n", offset, i);
  38.             exit(1);
  39.         }
  40.  
  41.         if(read(filedes, buffer, 512) < 0)
  42.         {
  43.             printf("Error reading block  at byte %ld\n", offset);
  44.             exit(1);
  45.         }
  46.     }
  47.  
  48.     unlink(filename);
  49.     print_elapsed("dread benchmark", REALMIN);
  50.     exit(0);
  51. }
  52.  
  53.